// Keywords: multispecies, interaction

species all initialize() {
	defineConstant("K", 100);
	defineConstant("R", log(20));
	defineConstant("A", 0.015);
	defineConstant("S", 10^2);    // larger is more stable, but slower
	defineConstant("N0_host", asInteger((135.6217 + 0.01) * S));
	defineConstant("N0_parasitoid", asInteger((109.3010 + 0.01) * S));
}
species host initialize() {
	initializeSpecies(avatar="🐛", color="cornflowerblue");
}
species parasitoid initialize() {
	initializeSpecies(avatar="🦟", color="red");
}
ticks all 1 early() {
	host.addSubpop("p1", N0_host);
	parasitoid.addSubpop("p2", N0_parasitoid);
}
ticks all late() {
	x1 = p1.individualCount / S;      // host density
	x2 = p2.individualCount / S;      // parasitoid density
	
	x1′ = x1 * exp(R - x1/K - A*x2);  // x1[t+1]
	x2′ = x1 * (1 - exp(-A*x2));      // x2[t+1]
	
	p1.setSubpopulationSize(asInteger(round(S * x1′)));
	p2.setSubpopulationSize(asInteger(round(S * x2′)));
}
ticks all 250 late() {
}
